# -*- coding: utf-8 -*-
# SVN的目录有中文
# svn的命令传英文路径没有问题，中文路径由于编码问题会出现乱码
# 中文路径是utf-8的编码，传给SVN会出现乱码，识别不了
# windows的中文编码是gbk. svn的中文路径需要转化为gbk的编码才能识别
# cmd_gbk=cmd.encode("gbk")

import os
import datetime
import requests
# from getSVN import svnconfig
import time

setting = {
    'svn': r'E:\TortoiseSVN\bin',  # svn的程序所在路径
    'url': 'https://172.16.193.250/svn/项目质量部文件共享/工程之星小版本',  # svn地址
    'dist': u'F:\\项目共享\\工程之星小版本',  # 目标地址
    'closeOption': ' /closeonend:1'
    # 'interval':15 #更新时间
}

# /closeonend:0 不自动关闭对话框
# /closeonend:1 如果没发生错误则自动关闭对话框
# /closeonend:2 如果没发生错误和冲突则自动关闭对话框
# /closeonend:3如果没有错误、冲突和合并，会自动关闭
# /closeonend:4如果没有错误、冲突和合并，会自动关闭


# 发送消息函数
def postmsg(url, post_data):
    # post_data的格式要按照企业微信机器人配置说明里的的要求来，这次用的是markdown格式
    post_data = '{"msgtype" : "markdown", "markdown" : {"content": "%s"}}' % post_data
    if url == '':
        print('URL地址为空！')
    else:
        r = requests.post(url, data=post_data.encode())
        rstr = r.json()
        if r.status_code == 200 and 'error' not in rstr:
            result = '发送成功'
            return result
        else:
            return 'Error'


def new_report(test_report):
    lists = os.listdir(test_report)
    # 列出目录的下所有文件和文件夹保存到lists
    lists.sort(key=lambda fn: os.path.getmtime(test_report + "/" + fn))  # 按时间排序
    file_new = os.path.join(test_report, lists[-1])
    # 获取最新的文件保存到file_ new
    script_path = os.path.realpath(file_new)
    return script_path


# dist = svnconfig.setting['dist']
dist = setting['dist']

# cmd_utf8 = 'TortoiseProc.exe /command:update /path ' + dist + svnconfig.setting['closeOption']
cmd_utf8 = 'TortoiseProc.exe /command:update /path ' + dist + setting['closeOption']
cmd_gbk = cmd_utf8.encode("gbk")  # 必须得转成gbk，否则是乱码，不能正常执行

result = os.system(cmd_utf8)

if result == 0:
    print('svn update success')
else:
    print('svn update fail')

file_path = new_report(dist)
file = os.listdir(file_path)

# 获取本地最新版本号
release = file_path.rsplit('\\')[-1]


# 获取版本控制文件中的所有版本
version1 = open("F:\PycharmProjects\workpython\getSVN\版本控制.txt", encoding='UTF-8')
version2 = version1.readlines()
version3 = []
for i in range (len(version2)):
    version3.append(version2[i].replace('\n', '').replace('\r', ''))

#获取app下载地址与更新说明下载地址
svn_path = file_path.replace('F:\\项目共享\\工程之星小版本\\', 'https://172.16.193.250/svn/项目质量部文件共享/工程之星小版本/')
file_path1 = file_path + '\\' + file[1]
app_path = svn_path + '/' + file[0]
update_path = svn_path + '/' + file[1]

# 获取更新说明前3个内容
sonnefile = open(file_path1, encoding='UTF-8')
content = sonnefile.readlines()
content2 = ''
for content1 in content[0:3]:
    content2 = content2 + content1

# SVN登录账号/密码
pwd = "qmcguest/qmc854356"

app_edition = file_path.rsplit('\\')[-1]
stctime = os.stat(file_path).st_ctime
Creation_time = time.strftime("%Y-%m-%d", time.localtime(stctime))
today = datetime.datetime.now().strftime('%Y-%m-%d')

if __name__ == '__main__':
    # 机器人测试url
    # url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a9801947-14cd-44bb-bb2c-2a3693c63ec0"
    # 正式推送url
    url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=bc5521ea-f4e1-4413-9d61-9495be0e909e"
    # 这个是你要调用的机器人地址，在群里添加了机器人之后就会有这个地址了，每个机器人只有一个地址

    post_data1 = "> # 工程之星版本通知\n\n> ### 软件版本:" + app_edition + "\n\n> ### 更新内容:\n" + ">> " \
                 + content2 + ">> **详细内容请下载更新说明**\n\n> 账密：" + pwd + "\n\n> [软件下载](" + app_path + ")" \
                 + "\n> [更新说明下载](" + update_path + ")"

    if release not in iter(version3):
        result = postmsg(url, post_data1)
        version = open("F:\PycharmProjects\workpython\getSVN\版本控制.txt", "a+", encoding='UTF-8')
        version.write(release)
        version.write('\n')
        version.close()
        print("写入成功")
